<?php
namespace App\Utilitys;

use Illuminate\Support\Facades\Redis;

class MyRedis
{
    /**
     * 操作redis
     * return \Illuminate\Support\Facades\Redis::get('t1');
     */

    protected static $expire = 7200; //默认2小时

    /**
     * 获取
     * @param unknown $key
     */
    public static function getOne($key)
    {
        if (!$key) { return ''; }
        $str = Redis::get($key);
        return unserialize($str);
    }

    /**
     * 设置
     * @param unknown $key
     * @param unknown $value
     */
    public static function setOne($key, $value)
    {
        if (!$key || !$value) { return ''; }
//        $json = json_encode($value, JSON_UNESCAPED_UNICODE);
        $json = serialize($value);
        $rst = Redis::setex($key, self::$expire, $json);
        return $rst=='OK' ? 1 : 0;
    }

    /**
     * 删除
     * @param unknown $key
     */
    public function setDel($key)
    {
        if (!$key) { return ''; }
        $rst = Redis::delete($key);
        return $rst=='OK' ? 1 : 0;
    }

    /**
     * 在队列头部插入一个元素
     * @param unknown $key
     * @param unknown $value
     * 返回队列长度
     */
    public function setPush($key,$value)
    {
        if (!$key || !$value) { return ''; }
        $rst = Redis::lPush($key,$value);
        return $rst=='OK' ? 1 : 0;
    }

    /**
     * 删除并返回队列中的头元素。
     * @param unknown $key
     */
    public function setPop($key)
    {
        if (!$key) { return ''; }
        $rst = Redis::lPop($key);
        return $rst=='OK' ? 1 : 0;
    }

    /**
     * 返回队列指定区间的元素
     * @param unknown $key
     * @param unknown $start
     * @param unknown $end
     */
    public function getRange($key,$start,$end)
    {
        if (!$key) { return ''; }
        return Redis::lrange($key,$start,$end);
    }

    /**
     * 返回队列长度
     * @param unknown $key
     */
    public function getLen($key)
    {
        if (!$key) { return ''; }
        return Redis::lLen($key);
    }

    /**
     * 在队列尾部插入一个元素
     * @param unknown $key
     * @param unknown $value
     * 返回队列长度
     */
    public function setPushAppend($key,$value)
    {
        if (!$key || !$value) { return ''; }
        $rst = Redis::rPush($key,$value);
        return $rst=='OK' ? 1 : 0;
    }
}